package com.hfy.pcberpbackend.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hfy.pcberpbackend.entity.Employee;
import com.hfy.pcberpbackend.dto.EmployeeQueryDTO;
import com.hfy.pcberpbackend.common.PageResult;

import java.util.List;
import java.util.Map;

/**
 * 员工Service接口
 */
public interface EmployeeService extends IService<Employee> {
    
    /**
     * 分页查询员工列表
     */
    PageResult<Employee> getEmployeePage(EmployeeQueryDTO query);
    
    /**
     * 根据ID获取员工详情
     */
    Employee getEmployeeById(Long id);
    
    /**
     * 新增员工
     */
    Long createEmployee(Employee employee);
    
    /**
     * 更新员工信息
     */
    void updateEmployee(Long id, Employee employee);
    
    /**
     * 删除员工
     */
    void deleteEmployee(Long id);
    
    /**
     * 批量删除员工
     */
    void batchDeleteEmployees(List<Long> ids);
    
    /**
     * 获取业务经理选项
     */
    List<Map<String, Object>> getManagerOptions();
    
    /**
     * 获取员工角色选项
     */
    List<Map<String, String>> getEmployeeRoles();
    
    /**
     * 检查员工代码是否存在
     */
    boolean isEmployeeCodeExists(String employeeCode, Long excludeId);
    
    /**
     * 模糊搜索员工
     * @param keyword 关键词（员工代码或员工姓名）
     * @param role 角色过滤（可选）
     * @param size 返回结果数量限制
     * @return 员工列表
     */
    List<Employee> searchEmployees(String keyword, String role, Integer size);
} 